package config

import (
	"os"

	"github.com/volcengine/volc-sdk-golang/base"
	"github.com/volcengine/volc-sdk-golang/service/vod"
)

// 全局配置
var Conf = struct {
	AK     string
	SK     string
	Region string
	Port   string
}{
	Region: "cn-north-1", // 默认区域
	Port:   "8080",       // 默认端口
}

// 初始化配置（从环境变量或配置文件加载）
func Init() {
	// 从环境变量加载AK/SK（推荐生产环境使用）
	Conf.AK = os.Getenv("VOLC_AK")
	Conf.SK = os.Getenv("VOLC_SK")

	// 从环境变量加载端口和区域（可选）
	if port := os.Getenv("VOLC_PORT"); port != "" {
		Conf.Port = port
	}
	if region := os.Getenv("VOLC_REGION"); region != "" {
		Conf.Region = region
	}

	// 校验必要配置
	if Conf.AK == "" || Conf.SK == "" {
		panic("请设置环境变量 VOLC_AK 和 VOLC_SK（火山引擎访问密钥）")
	}
}

// 获取火山引擎认证信息
func GetCredentials() base.Credentials {
	return base.Credentials{
		AccessKeyID:     Conf.AK,
		SecretAccessKey: Conf.SK,
	}
}

// 统一响应格式
type Response struct {
	Code    int         `json:"code"`
	Message string      `json:"message"`
	Data    interface{} `json:"data,omitempty"`
}

// 初始化VOD客户端
func GetVodInstance() *vod.Vod {
	instance := vod.NewInstanceWithRegion(Conf.Region)
	instance.SetCredential(GetCredentials())
	return instance
}
